package com.example.SpringModelManage.service;

import com.example.SpringModelManage.entity.Dataset;
import com.example.SpringModelManage.entity.Model;

import java.util.List;

/**
 * Class Description
 *
 * @author hulilei
 * @version 1.0.0
 * @date 2021/10/24 16:05
 */
public interface ModelService {
    public Model selectModelById(String modelId);

    public List<Model> getModelByLimit(String developId, Integer startIndex, Integer pageSize);

    public List<Model> getModelByLimitSearch(
            String developId,
            String modelId,
            String modelName,
            String modelVersion,
            String modelType,
            String modelStatus,
            Integer startIndex,
            Integer pageSize
    );

    /**
     * 创建模型
     */
    public void createModel(
            String developId,
            String modelId,
            String umId,
            String modelName,
            String modelType,
            String modelLanguage,
            String modelDescribe,
            String modelCreateTime,
            String modelVersion,
            String modelStatus
    );

    /**
     * 根据开发者ID和模型状态，获取模型ID和名称
     */
    public List<Model> getModelNameByDevelopId(String developId, String modelStatus);

    /**
     * 上传模型的操作
     */
    public void uploadModel(
            String modelId,
            String datasetId,
            String mdId,
            String modelStatus,
            String modelFilePath,
            String modelRequirementPath,
            String modelSpecificationPath,
            String modelUploadTime
    );

    /**
     * 获取模型指导价（根据模型ID）
     */
    public double getModelGuidePrice(String modelId);

    /**
     * 发布模型
     */
    public void releaseModel(String modelId, String modelPrice, String modelStatus, String modelReleaseTime);

    public String getModelVersionById(String modelId);

    /**
     * 更新模型文件
     */
    public void updateModelFile(
            String developId,
            String modelId,
            String modelVersion,
            String modelFilePath
    );

    /**
     * 根据模型ID，获取模型的数据集名称
     */
    public List<String> getDatasetNameByModelId(String modelId);

    /**
     * 根据模型ID，获取模型的数据集ID和名称
     */
    public List<Dataset> getModelDatasetByModelId(String modelId);

    /**
     * 更新模型数据集(的绑定关系)
     */
    public void updateModelDataset(
            String modelId,
            String modelUpdateTime,
            String operator,
            String datasetId,
            String mdId
    );

    /**
     * 获取所有的数据集（根据开发者ID）
     */
    public List<Dataset> getDatasetById(String developId);

    /**
     * 获取数据集（根据开发者ID和筛选条件）
     */
    public List<Dataset> getDatasetByLimitSearch(
            String developId,
            String datasetId,
            String datasetName,
            String datasetType,
            String datasetVersion,
            Integer startIndex,
            Integer pageSize
    );

    /**
     * 上传数据集的操作
     */
    public void uploadDataset(
            String developId,
            String datasetId,
            String datatsetName,
            String datasetVersion,
            String datasetUploadTime,
            String datasetType,
            String datasetFilePath
    );

    /**
     * 更新数据集的操作
     */
    public void updateDataset(
            String datasetId,
            String datasetFilePath,
            String datasetUpdateTime,
            String datasetVersion
    );

}
